#include <stdio.h>
#include <libavformat/avformat.h>
#include </home/alexander/CLionProjects/FFmpegLogTest/log/log.h>
#include </home/alexander/CLionProjects/FFmpegLogTest/util/util.h>
#include <stdbool.h>
#include "extra_audio.h"
#include "extra_video.h"


#define CurrentDir "/home/alexander/CLionProjects/FFmpegLogTest/"
int returnCode;

void main(int argc, char **argv)
{
    setLogLevel(AV_LOG_DEBUG);
    logInfo("Hello, i am ffmpeg log %s!!!\n", "info");
    logError("Hello, i am ffmpeg log %s!!!\n", "error");

    /*char *src = getCurrentDirFileAbsolutePath("aaa.txt");
    char *dest = getCurrentDirFileAbsolutePath("bbb.txt");
    returnCode = avpriv_io_move(src, dest);
    if(returnCode < 0)
    {
        logError("Rename File Failed, code is %d", (int *)returnCode);
    }
    char *dyingFile = getCurrentDirFileAbsolutePath("aaa.txt1");
    returnCode = avpriv_io_delete(dyingFile);
    if(dyingFile < 0)
    {
        logError("Delete File Failed, code is %d", (int *)returnCode);
    }*/

//    /**函数自动为对象分配空间*/
//    AVIOContext *avioContext = NULL;
//    returnCode = avio_open_dir(&avioContext, CurrentDir, NULL);
//    if(returnCode < 0)
//    {
//        logError("Open dir failed, code is %d", returnCode);
//    }
//    /**函数自动为对象分配空间*/
//    AVIODirEntry *avioDirEntry = NULL;
//    while (true)
//    {
//        returnCode = avio_read_dir(avioContext, &avioDirEntry);
//        if(returnCode < 0)
//        {
//            logError("Read dir failed, code is %d", returnCode);
//            goto __fail;
//        }
//        if(avioDirEntry == NULL)
//        {
//            break;
//        }
//        logInfo("File is %s\n", avioDirEntry->name);
//        /**对象使用完毕之后释放空间，防止造成内存泄漏*/
//        avio_free_directory_entry(&avioDirEntry);
//    }
//__fail:
//    /**到最后关闭文件夹并释放上下文对象*/
//    avio_close_dir(&avioContext);
//    free(avioContext);

//    /*打印多媒体文件的信息*/
//    AVFormatContext *avFormatContext = NULL;
//    av_register_all();
//    char *path = getCurrentDirFileAbsolutePath("snow.mp4");
//    returnCode = avformat_open_input(&avFormatContext, path, NULL, NULL);
//    if(returnCode < 0)
//    {
//        logError("Open input file failed, Error code is %d\n", (int *)returnCode);
//        goto __fail;
//    }
//    logInfo("Code is %d\n", (int *)returnCode);
//    //1：格式上下文 2：文建索引，一般为零 3：文件路径 4：输入流的信息还是输出流的信息
//    av_dump_format(avFormatContext, 1, path, 0);
//__fail:
//    avformat_close_input(&avFormatContext);
//    free(avFormatContext);

//    extraAudio();

//    extraVideo();

    return ;
}